#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
namespace Cephei.QL.Termstructures.Yield
{
    /// <summary> 
	/// ! Fits a discount function to a set of cubic B-splines \f$ N_{i,3}(t) \f$, i.e., \f[ d(t) = \sum_{i=0}^{n}  c_i * N_{i,3}(t) \f]  See: McCulloch, J. 1971, "Measuring the Term Structure of Interest Rates." Journal of Business, 44: 19-31  McCulloch, J. 1975, "The tax adjusted yield curve." Journal of Finance, XXX811-30  \warning "The results are extremely sensitive to the number and location of the knot points, and there is no optimal way of selecting them." James, J. and N. Webber, "Interest Rate Modelling" John Wiley, 2000, pp. 440.
	/// </summary>
    [Guid ("4D56800C-9B85-45d3-AF11-E84232A9937F"),ComVisible(true)]
	public interface ICubicBSplinesFitting 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Double BasisFunction(Int32 i, Double t);
    }   

    /// <summary> 
	/// ! Fits a discount function to a set of cubic B-splines \f$ N_{i,3}(t) \f$, i.e., \f[ d(t) = \sum_{i=0}^{n}  c_i * N_{i,3}(t) \f]  See: McCulloch, J. 1971, "Measuring the Term Structure of Interest Rates." Journal of Business, 44: 19-31  McCulloch, J. 1975, "The tax adjusted yield curve." Journal of Finance, XXX811-30  \warning "The results are extremely sensitive to the number and location of the knot points, and there is no optimal way of selecting them." James, J. and N. Webber, "Interest Rate Modelling" John Wiley, 2000, pp. 440. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface ICubicBSplinesFitting_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    ICubicBSplinesFitting Create (Cephei.Core.IVector<Double> knotVector, Microsoft.FSharp.Core.FSharpOption<Boolean> constrainAtZero);
    }
}

